package cn.e4j.core.common.constant.factory;

import cn.e4j.core.cache.CacheKey;
import cn.e4j.core.cache.CacheUtil;
import cn.e4j.core.common.constant.state.ManagerStatus;
import cn.e4j.core.common.constant.state.MenuStatus;
import cn.e4j.core.log.LogObjectHolder;
import cn.e4j.core.util.SpringContextHolder;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.context.annotation.DependsOn;
import org.springframework.stereotype.Component;

/**
 * 常量的生产工厂
 *
 * @author wenchuan.li
 * @date 2017年2月13日 下午10:55:21
 */
@Component
@DependsOn("springContextHolder")
public class ConstantFactory {

//    private NoticeMapper noticeMapper = SpringContextHolder.getBean(NoticeMapper.class);

    public static IConstantFactory me() {
        return SpringContextHolder.getBean("constantFactory");
    }


    /**
     * 通过角色id获取角色名称
     */
    //@Override
    @Cacheable(value = CacheUtil.CONSTANT, key = "'" + CacheKey.SINGLE_ROLE_NAME + "'+#roleId")
    public String getSingleRoleName(Object roleId) {
//        if (ValidateUtil.isEmpty(roleId) || roleId.toString().equals("0")) {
//            return "--";
//        }
//        Role roleObj = roleMapper.selectById(roleId.toString());
//        if (ToolUtil.isNotEmpty(roleObj) && ToolUtil.isNotEmpty(roleObj.getName())) {
//            return roleObj.getName();
//        }
        return "";
    }

    /**
     * 通过角色id获取角色英文名称
     */
   // @Override
    @Cacheable(value = CacheUtil.CONSTANT, key = "'" + CacheKey.SINGLE_ROLE_TIP + "'+#roleId")
    public String getSingleRoleTip(Integer roleId) {
//        if (0 == roleId) {
//            return "--";
//        }
//        Role roleObj = roleMapper.selectById(roleId);
//        if (ToolUtil.isNotEmpty(roleObj) && ToolUtil.isNotEmpty(roleObj.getName())) {
//            return roleObj.getTips();
//        }
        return "";
    }


    /**
     * 获取字典名称
     */
    //@Override
//    public String getDictName(Integer dictId) {
//        if (ToolUtil.isEmpty(dictId)) {
//            return "";
//        } else {
//            Dict dict = dictMapper.selectById(dictId);
//            if (dict == null) {
//                return "";
//            } else {
//                return dict.getName();
//            }
//        }
//    }

    /**
     * 获取通知标题
     */
    //@Override
//    public String getNoticeTitle(Integer dictId) {
//        if (ToolUtil.isEmpty(dictId)) {
//            return "";
//        } else {
//            Notice notice = noticeMapper.selectById(dictId);
//            if (notice == null) {
//                return "";
//            } else {
//                return notice.getTitle();
//            }
//        }
//    }

    /**
     * 根据字典名称和字典中的值获取对应的名称
     */
    //@Override
//    public String getDictsByName(String name, Integer val) {
//        Dict temp = new Dict();
//        temp.setName(name);
//        Dict dict = dictMapper.selectOne(new QueryWrapper<Dict>(temp));
//        if (dict == null) {
//            return "";
//        } else {
//            QueryWrapper<Dict> wrapper = new QueryWrapper<Dict>();
//            wrapper = wrapper.eq("pid", dict.getId());
//            List<Dict> dicts = dictMapper.selectList(wrapper);
//            for (Dict item : dicts) {
//                if (item.getNum() != null && item.getNum().equals(val)) {
//                    return item.getName();
//                }
//            }
//            return "";
//        }
//    }

    /**
     * 获取性别名称
     */
    //@Override
//    public String getSexName(Integer sex) {
//        return getDictsByName("性别", sex);
//    }

    /**`
     * 获取用户登录状态
     */
    //@Override
    public String getStatusName(Integer status) {
        return ManagerStatus.valueOf(status);
    }

    /**
     * 获取菜单状态
     */
    //@Override
    public String getMenuStatusName(Integer status) {
        return MenuStatus.valueOf(status);
    }

    /**
     * 查询字典
     */
    //@Override
//    public List<Dict> findInDict(Integer id) {
//        if (ToolUtil.isEmpty(id)) {
//            return null;
//        } else {
//            QueryWrapper<Dict> wrapper = new QueryWrapper<Dict>();
//            List<Dict> dicts = dictMapper.selectList(wrapper.eq("pid", id));
//            if (dicts == null || dicts.size() == 0) {
//                return null;
//            } else {
//                return dicts;
//            }
//        }
//    }

    /**
     * 获取被缓存的对象(用户删除业务)
     */
    //@Override
    public String getCacheObject(String para) {
        return LogObjectHolder.me().get().toString();
    }


}
